function f1(callback) {
    setTimeout(() => {
        console.log('f1');
        callback();
    }, 2000)
}

function f2() {
    console.log('f2');
}

f1();// 花时间比较多 模拟异步
f2();

// 单线程的js设计了异步任务机制来解决阻塞及程序僵死问题
// 代码的编写顺序和执行顺序 就有了差异 （有损顺序可读性）

// 解决异步任务同步化问题
// 1.回调函数
f1(f2); // 高阶函数